package com.tarena.lbs.user.utils;

import java.security.SecureRandom;

/* 密码工具类 用于生成随机密码 */
public class PasswordUtil {
    //定义一个允许出现在密码串中的字符数集合,包含大写字母、小写字母、数字、特殊字符
    private static final String ALLOWED_CHARS =
            "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()_+";
    //创建一个安全的随机数数生成器,用于生成随机数
    private static final SecureRandom RANDOM = new SecureRandom();
    /* 创建生成指定位数随机密码串的静态方法 */
    public static String generateRandomPassword(int length) {
        if (length<8 || length>20) throw new RuntimeException("密码长度必须在8-20之间");
        //创建一个字符串拼接工具,用于拼接生成的密码串
        StringBuilder password = new StringBuilder();
        for (int i = 0; i < length; i++){
            //生成一个随机索引,用于从字符数集合中获取一个字符
            int index = RANDOM.nextInt(ALLOWED_CHARS.length());
            char randomChar = ALLOWED_CHARS.charAt(index);
            //将随机字符添加到密码串中
            password.append(randomChar);
        }
        //返回生成的密码
        return password.toString();
    }
}
